Firebase Analyticsで送信するイベント設計の方針を考えてみた (BigQueryは使わない案)
スマホアプリの使用状況を把握するために、Google Analyticsを導入していましたが、2019年10月31日でサポートが終了するため、Firebase Analyticsに入れ替えました。
しかし、Google Analyticsと同じようにイベント送信をしても、Firebaseコンソール上で同じように確認できないことに改めて気づきました。
そのため、「どのような方針でイベント送信すれば良いのか?」を自分なりに考えてみました。
注意
本記事は筆者の考えをまとめた内容です。そのため、事実と異なる可能性や推測を含む点にご注意ください。
目次
とりあえず結論から(個人的な方針)
「イベントに属するパラメータの内容(テキスト)は、10個までしか見れない」を考慮した結果、下記の方針を考えました。
- 「パラメータ内容が見れる項目は最大10個まで」を念頭に送信するデータを決める
- 「xxxを追加、yyyを削除、zzを選択」などのイベント系は、なるべくイベント名で工夫する
- イベント名の上限は500のため、それなりに余裕がある
- パラメータは見れないと割り切る
- どうしても見たいパラメータだけ、10個までピックアップしておく
- イベント名とパラメータ名は、長さに気をつける(半角英数字40文字まで)
- イベント名は固定名とする(変数を含むと煩雑になるため。時刻とか。)
- 例
- add_xx
- delete_yyy
- select_zzz
- 設定値などのON/OFF系も、イベント名で工夫する
- 例
- setting_xxx_on
- setting_xxx_off
- setting_yyy_on
- setting_yyy_off
- 例
- 「合計と平均」が分かれば良い数値は、数値で扱う
- 「個別の値(合計や平均以外)」が知りたい数値は、文字列で扱う
小規模なアプリの場合、BigQuery
を使っても気にならないレベルの金額だと思うので、いっそ使うのも有りかもしれません。
イベントのおさらい
「自動で送信されるイベント」と「自分で送信するイベント」の2種類があります。
このうち、「自分で送信するイベント」には下記の特徴(仕様)があります。
- 「1つのイベント」に対して、「最大25個のパラメータ(Key-Value)」を付与できる
- イベント名とパラメータ名は、「定義済みの名前」と「自分で作成する名前」の2種類がある
送信されたイベントの詳細(パラメータ)は、Firebase Analyticsコンソールでは見れないため、BigQuery
で見る必要があります。
もしくは、BigQuery
で処理をして、Tableau
などの可視化ツールを使う必要がありそうです。
ただし、下記の制限内で、Firebaseコンソールで見ることができます。
- テキスト:10個まで
- 数値:40個まで
参考:Firebase Analyticsのイベント送信について調べた | Developers.IO
Firebaseコンソールでイベントを見る
イベント送信
下記のイベントを送信しました。(一部抜粋)
var analytics = FirebaseAnalytics.GetInstance(this); var timestamp = DateTime.Now.ToString("s"); // ------------------------------------ // Event: post_score, post_socre_custom1, post_socre_custom2 // ------------------------------------ var bundle1 = new Bundle(); bundle1.PutLong(FirebaseAnalytics.Param.Score, 111); bundle1.PutLong(FirebaseAnalytics.Param.Level, 333); bundle1.PutString(FirebaseAnalytics.Param.Character, $"any_charactor_name_{timestamp}"); analytics.LogEvent(FirebaseAnalytics.Event.PostScore, bundle1); analytics.LogEvent("post_socre_custom1", bundle1); bundle1.PutString("post_score_add_param", $"post_score_add_value_{timestamp}"); analytics.LogEvent(FirebaseAnalytics.Event.PostScore, bundle1); analytics.LogEvent("post_socre_custom2", bundle1); // ------------------------------------ // Event: select_content, select_content_custom1, select_content_custom2 // ------------------------------------ var bundle2 = new Bundle(); bundle2.PutString(FirebaseAnalytics.Param.ContentType, $"any_content_type_{timestamp}"); bundle2.PutString(FirebaseAnalytics.Param.ItemId, "123"); analytics.LogEvent(FirebaseAnalytics.Event.SelectContent, bundle2); analytics.LogEvent("select_content_custom1", bundle2); bundle2.PutString("select_content_add_param", $"select_content_add_value_{timestamp}"); analytics.LogEvent(FirebaseAnalytics.Event.SelectContent, bundle2); analytics.LogEvent("select_content_custom2", bundle2); // ------------------------------------ // Event: view_item, view_item_custom1, view_item_custom2 // ------------------------------------ var bundle3 = new Bundle(); bundle3.PutString(FirebaseAnalytics.Param.ItemId, "any_item_id"); bundle3.PutString(FirebaseAnalytics.Param.ItemName, $"any_item_name_{timestamp}"); bundle3.PutString(FirebaseAnalytics.Param.ItemCategory, "any_item_category"); analytics.LogEvent(FirebaseAnalytics.Event.ViewItem, bundle3); analytics.LogEvent("view_item_custom1", bundle3); bundle3.PutString("view_item_add_param", $"view_item_add_value_{timestamp}"); analytics.LogEvent(FirebaseAnalytics.Event.ViewItem, bundle3); analytics.LogEvent("view_item_custom2", bundle3);
Firebaseコンソールの様子
送信したイベントが表示されています。
ただし、詳細画面で各イベントに属するパラメータの内容は表示されません。(item_id
やitem_name
といったパラメータが無い)
イベントパラメータを追加する
各イベントに属するパラメータの内容を見るために、「イベントパラメータ」を追加します。
イベント一覧の右側で「パラメータレポートを編集」を選択します。
「そのイベントに属するパラメータ一覧」が表示されるため、見たいパラメータを選択し、保存します。
項目が無い場合は、「パラメータを入力」して追加すればOKです。
しかし、データ数は0件となっています。
この設定後、36時間ぐらい経過しても表示されませんでしたが、Analyticsデータを再送信すると表示されました。
Firebaseコンソールで見れるパラメータは、上記の設定後に送信したイベントみたいです。
select_contentは特別?
「イベント:select_content」は、何もしなくてもcontent_type
が表示されていました。
「定義済みイベント名(FirebaseAnalytics.Event)に記載があるパラメータは自動表示かな?」とも思いましたが、content_type
のみであること、他のイベントでは表示されないことから、「select_contentのcontent_typeは特別」みたいです。
定義済みイベント名の記載(select_content)は下記ですが、item_id
は表示されていません。(イベント送信はしています)
他のイベントの様子(post_score)は下記ですが、Firebaseコンソールではscore / level / character
は表示されていません。(イベント送信はしています)
イベントパラメータの制限
「イベントパラメータの追加」は、プロジェクト毎に下記の制限があります。
- テキスト:10個まで
- 数値:40個まで
この制限はかなり厳しく、下記のように「テキストを10個追加」すると上限となります。
つまり、「イベントに属するパラメータの内容(テキスト)は、10個までしか見れない」という理解です。
なお、数値は40個まで登録可能ですが、「合計 or 平均」しか見れません。
さいごに
いろいろ実験しましたが、結果が分かるまで長時間(24時間+日付変更)も待つのが長かったです……。